<?php
class alt_site_menu extends module {
	function get_hash_code() {
		if ($this->version == 1) return 0;

		$all_params = $this->page_id.$this->block_id.$this->lang_id;

		foreach ($this->view_param as $k => $vp) {
			$all_params .= $k.$vp;
		}

		if (is_array($this->q_param)) {
			foreach($this->q_param as $k => $vp) {
				$all_params .= $k.$vp;
			}
		}

		return md5($all_params);
	}

	function make_arrays() {
		$pages = sql_select("SELECT P.PAGE_ID, P.NAME, P.URL, P.PARENT_ID, P.DIR_NAME, P.PAGE_ORDER, S.HOST, S.TEST_HOST ".
					"FROM PAGE P, SITE S WHERE P.VERSION = ".$this->version." AND P.SITE_ID = S.SITE_ID ".
					"ORDER BY PAGE_ORDER");

		foreach($pages as $pgs) {
			// Этот массивчик для того, чтобы хорошо было лезть вверх по дереву
			$this->page_id_array[$pgs["PAGE_ID"]] = $pgs;
		}

		$alt_pages = sql_select("SELECT PAGE_ID as PAGE_PAGE_ID, ALT_SITE_MENU.CONTENT_ID, PARENT_ID, ".
					"TITLE as NAME, URL, IMAGE_ACTIVE, IMAGE_PASSIVE, IS_BLANK, MENU_ORDER FROM ALT_SITE_MENU, CONTENT_MAP ".
					"WHERE CONTENT_MAP.CONTENT_ID=ALT_SITE_MENU.CONTENT_ID".
					" AND CONTENT_MAP.INF_BLOCK_ID=".$this->block_id." AND VERSION=".$this->version.
					" AND LANG_ID=".$this->lang_id." ORDER BY MENU_ORDER");

		foreach($alt_pages as $pgs) {
			if ($this->page_id == $pgs["PAGE_PAGE_ID"]) {
				$pgs["SELECTED"] = 1;
			}

			// Этот массивчик для того, чтобы хорошо было лезть вверх по дереву
			$this->alt_page_id_array[$pgs["CONTENT_ID"]] = $pgs;
			// А этот для того, чтобы вниз
			$this->alt_parent_id_array[$pgs["PARENT_ID"]][] = $pgs;
		}
	}

	// Warning! Achtung! Увага! Внимание!
	// Рекурсия! Передаются айдишник родителя уровня и номер уровня для сравнения с глубиной
	function get_level_array($page_id, $level) {
		$level_array = array();

		if(is_array($this->alt_parent_id_array[$page_id])) {

			foreach($this->alt_parent_id_array[$page_id] as $item) {
				if (intval($item["PAGE_PAGE_ID"]) > 0) {
					$path_array = array();
					$cur_page_id = $item["PAGE_PAGE_ID"];
					// составляем путь
					while ($cur_page_id != 0 && $cur_page_id != '') {
						$path_array[] = $this->page_id_array[$cur_page_id]["DIR_NAME"];
						$cur_page_id = $this->page_id_array[$cur_page_id]["PARENT_ID"];
					}
					$url = "http://".($this->version ? $this->page_id_array[$item["PAGE_PAGE_ID"]]["TEST_HOST"] : $this->page_id_array[$item["PAGE_PAGE_ID"]]["HOST"])."/".implode("/", array_reverse($path_array));
				}
				else {
					$url = $item["URL"];
				}

				if ( $level < $this->view_param["depth"] && is_array($this->alt_parent_id_array[$item["CONTENT_ID"]]) ) {
					$children = $this->get_level_array($item["CONTENT_ID"], $level + 1);
					$is_children = 1;
				}
				else {
					$children = 0;
					$is_children = 0;
				}

				array_push($level_array,  array("ITEM_NAME" => $item["NAME"],
								"URL" => $url,
								"IMAGE_ACTIVE" => $item["IMAGE_ACTIVE"],
								"IMAGE_PASSIVE" => $item["IMAGE_PASSIVE"],
								"IS_BLANK" => $item["IS_BLANK"],
								"IS_CHILDREN" => $is_children,
								"SELECTED" => $item["SELECTED"],
								"CHILDREN".$level => $children));
			}
		}
		return $level_array;
	}

	function content_init()	{
		global $common_data_server;

		$file_name = $common_data_server."module_templates/alt_site_menu/".$this->view_param["template"]."/menu.vtmpl";

		if (file_exists($file_name)) {
			$content_tmpl = new vlibTemplate();
			$content_tmpl->newTemplate($file_name);
		}
		else {
			$this->body = "Шаблон отсутствует: ".$file_name;
			return;
		}

		$this->make_arrays();

		if (!is_numeric($this->view_param["depth"]) || $this->view_param["depth"] < 1 || $this->view_param["depth"] > 10) {
			$this->view_param["depth"] = 2;
		}

		$this->level_dir[0] = "/";
		$menu_array = $this->get_level_array(0, 1);

		$content_tmpl->setLoop("ITEMS", $menu_array);

		$this->body = $content_tmpl->grab();
	}
}
?>
